package JavaSE.ThreadLearning.ThreadName;

/**
 * 学习 设置/获取线程的名字
 */
public class ThreadName {
    public static void main(String[] args) {
        // 获取线程名字
        // 方法一：通过在类中使用getName方法获取线程名
        new Name1().start();
        // 方法二：通过Thread中的静态方法currentThread()获取当前线程的引用
        //       其中包含线程的名字，可通过Thread.currentThread().getName()直接获取
        new Name2().start();

        // 设置线程名字
        // 方法一：通过setName(String name)方法设置线程名
        Name1 method1 = new Name1();
        method1.setName("辉夜");
        method1.start();
        // 方法二：通过父类Thread的有参构造方法在创建对象的时候直接设置线程名
        Name2 method2 = new Name2("白银");
        method2.start();
    }
}

class Name1 extends Thread {
    public void getTheName() {
        System.out.println(this.getName());
    }

    @Override
    public void run() {
        getTheName();
    }
}

class Name2 extends Thread {

    Name2() {
    }

    Name2(String name) {
        super(name);
    }

    public void getCurrentName() {
        System.out.println(Thread.currentThread());
        System.out.println(Thread.currentThread().getName());
    }

    @Override
    public void run() {
        getCurrentName();
    }
}